#!/usr/bin/python
# -*- coding: utf-8 -*-


class Master(object):
    def __init__(self):
        self.kongfu = ['五香煎饼果子配方']

    def make_cake(self):
        print('运用{0}制作煎饼果子'.format(self.kongfu))


class School(object):
    def __init__(self):
        self.kongfu = ['香辣煎饼果子']

    def make_cake(self):
        print('运用{0}制作煎饼果子'.format(self.kongfu))

class Prentice(Master, School):
    def __init__(self):
        self.kongfu = ['五香臭豆腐煎饼果子']

    def make_cake(self):
        self.__init__()
        print('运用{0}制作煎饼果子'.format(self.kongfu))

    #调用父类的方法和属性
    def make_master_cake(self):
        Master.__init__(self)
        Master.make_cake(self)

    def make_school_cake(self):
        School.__init__(self)
        School.make_cake(self)

    def make_old_cake(self):
        #方法一：指名道姓取调父类里面的方法
        #缺点：父类类名如果发生变化，相应代码也要进行修改
        #有点：可以指定调用某个父类的属性或方法
        # Master.__init__(self)
        # Master.make_cake(self)
        # School.__init__(self)
        # School.make_cake(self)



        #supper函数(超类)
        #2.2语法 优化后的语法：super().函数()
        #优点：只要关系还在 ，就可以直接找父类里面的属性或方法，进行使用，写作简洁
        #缺点：严格依赖于继承顺序进行查找
        super().__init__()
        super().make_cake()


'''
重写的条件
1.依赖于继承
2.重写父类的同名属性和方法
3.
'''


if __name__ == '__main__':
    result = Prentice()
    # print(result.kongfu)
    # result.make_cake()
    # result.make_master_cake()
    # result.make_school_cake()
    result.make_old_cake()
